package com.cykj.mapper;

import com.cykj.pojo.CyDetails;
import com.cykj.pojo.CyProject;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface ProjectMapper {
    List<CyProject> getAllProject();
    int changeStatus(@Param("proStatus") int proStatus, @Param("projectId") int detailsId);
    List<CyProject> searchProjectInfo(String value);
    List<String> getAllName();
    int commitDelete(String name);

    /**
     * 查明细
     * @param id
     * @return
     */
    List<CyDetails> lookInclude(int id);

    /**
     * 添加项目
     * @param name
     * @param fatherDepartId
     * @param price
     * @param status
     * @return
     */
    int addProjectCommit(@Param("name") String name,
                         @Param("fatherDepartId") int fatherDepartId,
                         @Param("price") int price,
                         @Param("status") int status);
    //添加项目顺便查重
    int isExistPro(String name);
    //添加项目和细项的关系
    int projectAndDetails(@Param("projectId") int projectId,@Param("detailsId") int detailsId);
    int alterInfo(@Param("projectId") int projectId,
                  @Param("projectName") String projectName,
                  @Param("projectPrice") int projectPrice);

    /**
     * 查询要修改的内容是否与原来一致
     * @param projectId
     * @param projectName
     * @param projectPrice
     * @return
     */
    CyProject searchAlter(@Param("projectId") int projectId,
                          @Param("projectName") String projectName,
                          @Param("projectPrice") int projectPrice);
    /**
     * 删除某个项目
     *删除前要判断该项目是否在套餐里面使用
     * @param projectId 项目ID
     * @return
     */
    int selectIsUse(int projectId);
    int deleteRow(int projectId);

    //通过细项名来获取细项id
    int detailsIdByName(String name);
    //通过项目名来获取项目的id
    int projectIdByName(String name);

    /**
     * 获取细项名，用来修改用的
     */
    List<CyDetails> getDetailsName(int id);
    //查询细项是否存在
    int searchDetails(@Param("id") int id, @Param("name") String name);
    //删除套餐和项目的关系
    int deleteDetailsRelative(int id);
    //重新添加项目的关系
    int addDetailsRelative(@Param("projectId") int projectId, @Param("detailsId") int detailsId);
    //价格搜索
    List<CyProject> borderPriceSearch(@Param("minPrice") int minPrice, @Param("maxPrice") int maxPrice);
    //查询是否被使用
    int selectIsUseName(String name);
    List<CyDetails> selectProjectByDetails(String name);


}
